package com.yantong.service;

import com.yantong.pojo.Product;
import com.yantong.pojo.ProductCentre;
import com.yantong.pojo.ProductData;
import com.yantong.pojo.vo.ProductDataVo;
import com.yantong.utils.PageUtils;

import java.util.List;
import java.util.Map;

public interface ProductDataService {

	/**
	 * 列表 用
	 * 
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:44:06
	 */
	PageUtils<ProductData> list(int offset, int limit, Product vo);
	

	/**
	 * 导出功能数据列表 用
	 * @param map
	 * @param rowBounds
	 * @return
	 */
	List<ProductDataVo> getExprotProductlist(Product vo);
	
	List<ProductData> list(String idOrName);
	PageUtils<ProductData> list(int offset, int limit, String idOrName);

    PageUtils<ProductData> listBaseProduct(int offset, int limit, String idOrName, String upStartTime,
                                           String upEndTime, Long pcate);


	/**
	 * 保存 用
	 *
	 * @param obj
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:46:11
	 */
	int save(ProductDataVo obj);

	/**
	 * 详情 用
	 *
	 * @param id
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:46:18
	 */
	ProductData getByKey(Long id);

	/**
	 * 商品详情，带规格+属性+sku 用
	 * @param id
	 * @return
	 * @author xiangyi
	 * @date 2018年9月18日-下午4:04:41
	 */
	ProductDataVo detail(Long id);

	/**
	 * 更新 用
	 *
	 * @param obj
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:46:25
	 */
	int update(ProductDataVo obj);

	/**
	 * 商品列表点击button更新商品信息
	 * @param id
	 * @param column
	 * @return
	 */
	int btnUpdate(Long id, String column);

	/**
	 * 删除 用
	 *
	 * @param id
	 * @return
	 * @author xiangyi
	 * @date 2018年8月28日-上午11:46:32
	 */
	int remove(Long id);

	/**
	 * 商品详情，带缓存
	 * @param id
	 * @return
	 */
	//ProductData getByKeyWithCache(Long id);

	/**
	 * 更新库存
	 * @param total
	 * @param base
	 * @return
	 */
	int changeStock(int total, Product base);
	int changeStock(int total, Long productId);

	/**
	 * 退回库存
	 * @param total
	 * @param base
	 * @return
	 */
	int refundStock(int total, Product base);
	/**
	 * 通过包含主键的Map更新平台商品库
	 * @param updMap
	 * @return
	 */
	int changeBaseProductByIdMap(Map<Object, Object> updMap);


	/**
	 * 得到活动类目商品
	 * @return
	 */
	PageUtils<ProductCentre> getProductByCate();


	void autoUpdateCart();

	 void delCart(Long id, Integer isKuaidi);

	 /**
		 * 复制单品 用
		 * @param productId
		 * @return
		 */
		int copyProduct(Long productId);
}

